package lock;

/**
 * Created by lx on 2017/5/14.
 * Synchronized 关键字 具有原子性(不可分割),可见性
 * 1:在java中锁对象都是放在堆中的(放在对象信息头中),java只有堆锁  ,没有栈锁
 * 2:尽量不要用字符串当做锁对象,字符串对象是放在常量池中的 ,有可能别的地方用到该对象锁。产生死锁排查困难
 */
public class SynchronizedTest {

    public static void main(String[] args) {
        /**
         * 子类是可以调用父类的synchronized的方法的
         * 他们都是使用的子类对象锁
         */
        T t = new TT();
        t.m();
    }
}

class  T {
    public synchronized void m(){
        System.out.println("T.m()");
    }
}

class  TT extends T{
    @Override
    public synchronized void m() {
        System.out.println("TT.m()");
        super.m();
    }
}
